HL7 FHIR Implementation Guide: ZM-Core Release 1 - Zambia
0.1.0 - Zambia flag

HL7 FHIR Implementation Guide: ZM-Core Release 1 - Zambia - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: ZM-Core Medication Profile - Detailed Descriptions

Draft as of 2026-08-12

Definitions for the zm-core-medication resource profile

Guidance on how to interpret the contents of this table can be foundhere

0. Medication
Definition

This resource is primarily used for the identification and definition of a medication, including ingredients, for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use.

ShortDefinition of a Medication
Control0..*
Is Modifierfalse
Must Supportfalse
Summaryfalse
Invariantsdom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources (contained.contained.empty())
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource (contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty())
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated (contained.meta.versionId.empty() and contained.meta.lastUpdated.empty())
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label (contained.meta.security.empty())
dom-6: A resource should have narrative for robust management (text.`div`.exists())
2. Medication.implicitRules
Definition

A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.

ShortA set of rules under which this content was created
Comments

Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of its narrative along with other profiles, value sets, etc.

Control0..1
Typeuri
Is Modifiertrue because This element is labeled as a modifier because the implicit rules may provide additional knowledge about the resource that modifies its meaning or interpretation
Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
Must Supportfalse
Summarytrue
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
4. Medication.contained
Definition

These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, nor can they have their own independent transaction scope. This is allowed to be a Parameters resource if and only if it is referenced by a resource that provides context/meaning.

ShortContained, inline Resources
Comments

This should never be done when the content can be identified properly, as once identification is lost, it is extremely difficult (and context dependent) to restore it again. Contained resources may have profiles and tags in their meta elements, but SHALL NOT have security labels.

Control0..*
This element is affected by the following invariants: dom-2, dom-4, dom-3, dom-5
TypeResource
Is Modifierfalse
Must Supportfalse
Summaryfalse
Alternate Namesinline resources, anonymous resources, contained resources
6. Medication.extension
Definition

An Extension


May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

ShortExtensionAdditional content defined by implementations
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Control0..*
TypeExtension
Is Modifierfalse
Must Supportfalse
Summaryfalse
Alternate Namesextensions, user content
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
SlicingThis element introduces a set of slices on Medication.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
  • value @ url
  • 8. Medication.extension:levelOfAccess
    Slice NamelevelOfAccess
    Definition

    Level of access / level of care at which this medicine is used (e.g. Health Post, Clinic, Hospital).

    ShortZM-Core Medication Level of Access
    Control0..*
    TypeExtension(ZM-Core Medication Level of Access) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    10. Medication.extension:fullName
    Slice NamefullName
    Definition

    Full trade name of the product as it appears in the Master List.

    ShortZM-Core Medication Full Name
    Control0..1
    TypeExtension(ZM-Core Medication Full Name) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    12. Medication.extension:genericName
    Slice NamegenericName
    Definition

    Generic name of the medicine.

    ShortZM-Core Medication Generic Name
    Control0..1
    TypeExtension(ZM-Core Medication Generic Name) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    14. Medication.extension:alternateName
    Slice NamealternateName
    Definition

    Alternate or brand name of the medicine, if any.

    ShortZM-Core Medication Alternate Name
    Control0..1
    TypeExtension(ZM-Core Medication Alternate Name) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    16. Medication.extension:description
    Slice Namedescription
    Definition

    Long description of the product from the Master List.

    ShortZM-Core Medication Description
    Control0..1
    TypeExtension(ZM-Core Medication Description) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    18. Medication.extension:strengthText
    Slice NamestrengthText
    Definition

    Product strength as free text (e.g. '500mg', '500mg/5ml').

    ShortZM-Core Medication Strength
    Control0..1
    TypeExtension(ZM-Core Medication Strength) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    20. Medication.extension:dosageUnit
    Slice NamedosageUnit
    Definition

    Unit of measure for the product strength (e.g. mg, ml, IU).

    ShortZM-Core Medication Dosage Unit
    Control0..1
    TypeExtension(ZM-Core Medication Dosage Unit) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    22. Medication.extension:dispensingUnits
    Slice NamedispensingUnits
    Definition

    Unit in which the product is dispensed (e.g. tablet, vial, bottle).

    ShortZM-Core Medication Dispensing Units
    Control0..1
    TypeExtension(ZM-Core Medication Dispensing Units) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    24. Medication.extension:dosesPerDispensingUnit
    Slice NamedosesPerDispensingUnit
    Definition

    Number of doses per dispensing unit.

    ShortZM-Core Medication Doses Per Dispensing Unit
    Control0..1
    TypeExtension(ZM-Core Medication Doses Per Dispensing Unit) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    26. Medication.extension:mslPackSize
    Slice NamemslPackSize
    Definition

    Numeric MSL pack size (e.g. 100, 10).

    ShortZM-Core Medication MSL Pack Size (numeric)
    Control0..1
    TypeExtension(ZM-Core Medication MSL Pack Size (numeric)) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    28. Medication.extension:packSizeText
    Slice NamepackSizeText
    Definition

    Pack size description (e.g. 'Pack of 100', 'Each').

    ShortZM-Core Medication Pack Size (text)
    Control0..1
    TypeExtension(ZM-Core Medication Pack Size (text)) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    30. Medication.extension:alternatePackSize
    Slice NamealternatePackSize
    Definition

    Alternate pack size description, if used in Master List.

    ShortZM-Core Medication Alternate Pack Size
    Control0..1
    TypeExtension(ZM-Core Medication Alternate Pack Size) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    32. Medication.extension:packWeight
    Slice NamepackWeight
    Definition

    Weight of a single pack, typically in kilograms.

    ShortZM-Core Medication Pack Weight
    Control0..1
    TypeExtension(ZM-Core Medication Pack Weight) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    34. Medication.extension:packsPerCarton
    Slice NamepacksPerCarton
    Definition

    Number of packs per carton.

    ShortZM-Core Medication Packs Per Carton
    Control0..1
    TypeExtension(ZM-Core Medication Packs Per Carton) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    36. Medication.extension:cartonsPerPallet
    Slice NamecartonsPerPallet
    Definition

    Number of cartons per pallet.

    ShortZM-Core Medication Cartons Per Pallet
    Control0..1
    TypeExtension(ZM-Core Medication Cartons Per Pallet) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    38. Medication.extension:shelfLife
    Slice NameshelfLife
    Definition

    Product shelf-life description (e.g. 24 months).

    ShortZM-Core Medication Shelf Life
    Control0..1
    TypeExtension(ZM-Core Medication Shelf Life) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    40. Medication.extension:storageInstructions
    Slice NamestorageInstructions
    Definition

    Free-text storage instructions.

    ShortZM-Core Medication Storage Instructions
    Control0..1
    TypeExtension(ZM-Core Medication Storage Instructions) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    42. Medication.extension:transportInstructions
    Slice NametransportInstructions
    Definition

    Free-text transport instructions.

    ShortZM-Core Medication Transport Instructions
    Control0..1
    TypeExtension(ZM-Core Medication Transport Instructions) (Extension Type: string)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    44. Medication.extension:storeRefrigerated
    Slice NamestoreRefrigerated
    Definition

    Indicates whether the product must be stored refrigerated.

    ShortZM-Core Medication Store Refrigerated
    Control0..1
    TypeExtension(ZM-Core Medication Store Refrigerated) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    46. Medication.extension:routeOfAdministration
    Slice NamerouteOfAdministration
    Definition

    Route of administration for this medicine (e.g. oral, IM, IV).

    ShortZM-Core Medication Route of Administration
    Control0..1
    TypeExtension(ZM-Core Medication Route of Administration) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    48. Medication.extension:atcClassification
    Slice NameatcClassification
    Definition

    WHO ATC classification for the product.

    ShortZM-Core Medication ATC Classification
    Control0..*
    TypeExtension(ZM-Core Medication ATC Classification) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    50. Medication.extension:storageClassification
    Slice NamestorageClassification
    Definition

    Storage classification (e.g. Room temperature, Cold chain, Freezer).

    ShortZM-Core Medication Storage Classification
    Control0..1
    TypeExtension(ZM-Core Medication Storage Classification) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    52. Medication.extension:storeRoomTemperature
    Slice NamestoreRoomTemperature
    Definition

    Storage temperature in degrees Celsius for room temperature storage.

    ShortZM-Core Medication Store Room Temperature
    Control0..1
    TypeExtension(ZM-Core Medication Store Room Temperature) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    54. Medication.extension:isHazardous
    Slice NameisHazardous
    Definition

    Indicates whether the product is hazardous.

    ShortZM-Core Medication Hazardous
    Control0..1
    TypeExtension(ZM-Core Medication Hazardous) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    56. Medication.extension:isFlammable
    Slice NameisFlammable
    Definition

    Indicates whether the product is flammable.

    ShortZM-Core Medication Flammable
    Control0..1
    TypeExtension(ZM-Core Medication Flammable) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    58. Medication.extension:isControlledSubstance
    Slice NameisControlledSubstance
    Definition

    Indicates whether the product is a controlled substance.

    ShortZM-Core Medication Controlled Substance
    Control0..1
    TypeExtension(ZM-Core Medication Controlled Substance) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    60. Medication.extension:isLightSensitive
    Slice NameisLightSensitive
    Definition

    Indicates whether the product is light sensitive.

    ShortZM-Core Medication Light Sensitive
    Control0..1
    TypeExtension(ZM-Core Medication Light Sensitive) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    62. Medication.extension:approvedByWHO
    Slice NameapprovedByWHO
    Definition

    Indicates whether the product is WHO prequalified / approved.

    ShortZM-Core Medication WHO Approved
    Control0..1
    TypeExtension(ZM-Core Medication WHO Approved) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    64. Medication.extension:isFullSupply
    Slice NameisFullSupply
    Definition

    Indicates if the product is part of the full-supply list.

    ShortZM-Core Medication Full Supply
    Control0..1
    TypeExtension(ZM-Core Medication Full Supply) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    66. Medication.extension:isTracer
    Slice NameisTracer
    Definition

    Indicates whether the product is a tracer medicine.

    ShortZM-Core Medication Tracer
    Control0..1
    TypeExtension(ZM-Core Medication Tracer) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    68. Medication.extension:packRoundingThreshold
    Slice NamepackRoundingThreshold
    Definition

    Threshold at which pack quantities are rounded up or down.

    ShortZM-Core Medication Pack Rounding Threshold
    Control0..1
    TypeExtension(ZM-Core Medication Pack Rounding Threshold) (Extension Type: decimal)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    70. Medication.extension:canRoundToZero
    Slice NamecanRoundToZero
    Definition

    Indicates whether calculated order quantities can be rounded down to zero.

    ShortZM-Core Medication Can Round To Zero
    Control0..1
    TypeExtension(ZM-Core Medication Can Round To Zero) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    72. Medication.extension:archived
    Slice Namearchived
    Definition

    Indicates whether the product is archived or no longer active in the catalogue.

    ShortZM-Core Medication Archived
    Control0..1
    TypeExtension(ZM-Core Medication Archived) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    74. Medication.extension:lsiEnabled
    Slice NamelsiEnabled
    Definition

    Indicates whether this medication is enabled for the Logistics Seasonality Index (LSI).

    ShortMedication LSI Enabled
    Control0..1
    TypeExtension(Medication LSI Enabled) (Extension Type: boolean)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    76. Medication.extension:price
    Slice Nameprice
    Definition

    Unit price of the product (e.g. pack price) as a Money value.

    ShortZM-Core Medication Price
    Control0..1
    TypeExtension(ZM-Core Medication Price) (Extension Type: Money)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    78. Medication.extension:productType
    Slice NameproductType
    Definition

    High-level product type (e.g. Medicine, Lab Reagent, Device).

    ShortZM-Core Medication Product Type
    Control0..1
    TypeExtension(ZM-Core Medication Product Type) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    80. Medication.extension:productGroup
    Slice NameproductGroup
    Definition

    Programmatic grouping (e.g. ARV, TB, Malaria, RMNCH).

    ShortZM-Core Medication Product Group
    Control0..1
    TypeExtension(ZM-Core Medication Product Group) (Extension Type: CodeableConcept)
    Is Modifierfalse
    Must Supportfalse
    Summaryfalse
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    82. Medication.modifierExtension
    Definition

    May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

    Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

    ShortExtensions that cannot be ignored
    Comments

    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

    Control0..*
    TypeExtension
    Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the resource that contains them
    Must Supportfalse
    Summarytrue
    Requirements

    Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

    Alternate Namesextensions, user content
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    84. Medication.identifier
    Definition

    Business identifier for this medication.

    ShortBusiness identifier for this medication
    Comments

    The serial number could be included as an identifier.

    NoteThis is a business identifier, not a resource identifier (see discussion)
    Control20..*
    TypeIdentifier
    Is Modifierfalse
    Must Supporttrue
    Summarytrue
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    SlicingThis element introduces a set of slices on Medication.identifier. The slices areUnordered and Open, and can be differentiated using the following discriminators:
    • value @ system
    • 86. Medication.identifier:programItemCode
      Slice NameprogramItemCode
      Definition

      Business identifier for this medication.

      ShortBusiness identifier for this medication
      Comments

      The serial number could be included as an identifier.

      NoteThis is a business identifier, not a resource identifier (see discussion)
      Control10..1*
      TypeIdentifier
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      88. Medication.identifier:programItemCode.use
      Definition

      The purpose of this identifier.

      Shortusual | official | temp | secondary | old (If known)
      Comments

      Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

      Control0..1
      BindingThe codes SHALL be taken from IdentifierUsehttp://hl7.org/fhir/ValueSet/identifier-use|5.0.0
      (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

      Identifies the purpose for this identifier, if known .

      Typecode
      Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      90. Medication.identifier:programItemCode.type
      Definition

      A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

      ShortDescription of identifier
      Comments

      This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

      Control10..1
      BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodeshttp://hl7.org/fhir/ValueSet/identifier-type|5.0.0
      (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

      A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

      TypeCodeableConcept
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Requirements

      Allows users to make use of identifiers when the identifier system is not known.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      92. Medication.identifier:programItemCode.system
      Definition

      Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

      ShortThe namespace for the identifier value
      Comments

      Identifier.system is always case sensitive.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-program-item-code
      ExampleGeneral: http://www.acme.com/identifiers/patient
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      94. Medication.identifier:programItemCode.value
      Definition

      The portion of the identifier typically relevant to the user and which is unique within the context of the system.

      ShortThe value that is unique
      Comments

      If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

      Control10..1
      This element is affected by the following invariants: ident-1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      ExampleGeneral: 123456
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      96. Medication.identifier:zammsaSKU
      Slice NamezammsaSKU
      Definition

      Business identifier for this medication.

      ShortBusiness identifier for this medication
      Comments

      The serial number could be included as an identifier.

      NoteThis is a business identifier, not a resource identifier (see discussion)
      Control10..1*
      TypeIdentifier
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      98. Medication.identifier:zammsaSKU.use
      Definition

      The purpose of this identifier.

      Shortusual | official | temp | secondary | old (If known)
      Comments

      Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

      Control0..1
      BindingThe codes SHALL be taken from IdentifierUsehttp://hl7.org/fhir/ValueSet/identifier-use|5.0.0
      (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

      Identifies the purpose for this identifier, if known .

      Typecode
      Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      100. Medication.identifier:zammsaSKU.type
      Definition

      A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

      ShortDescription of identifier
      Comments

      This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

      Control10..1
      BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodeshttp://hl7.org/fhir/ValueSet/identifier-type|5.0.0
      (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

      A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

      TypeCodeableConcept
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Requirements

      Allows users to make use of identifiers when the identifier system is not known.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      102. Medication.identifier:zammsaSKU.system
      Definition

      Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

      ShortThe namespace for the identifier value
      Comments

      Identifier.system is always case sensitive.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-zammsa-sku
      ExampleGeneral: http://www.acme.com/identifiers/patient
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      104. Medication.identifier:zammsaSKU.value
      Definition

      The portion of the identifier typically relevant to the user and which is unique within the context of the system.

      ShortThe value that is unique
      Comments

      If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

      Control10..1
      This element is affected by the following invariants: ident-1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      ExampleGeneral: 123456
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      106. Medication.identifier:altItemCode
      Slice NamealtItemCode
      Definition

      Business identifier for this medication.

      ShortBusiness identifier for this medication
      Comments

      The serial number could be included as an identifier.

      NoteThis is a business identifier, not a resource identifier (see discussion)
      Control0..1*
      TypeIdentifier
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      108. Medication.identifier:altItemCode.use
      Definition

      The purpose of this identifier.

      Shortusual | official | temp | secondary | old (If known)
      Comments

      Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

      Control0..1
      BindingThe codes SHALL be taken from IdentifierUsehttp://hl7.org/fhir/ValueSet/identifier-use|5.0.0
      (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

      Identifies the purpose for this identifier, if known .

      Typecode
      Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      110. Medication.identifier:altItemCode.system
      Definition

      Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

      ShortThe namespace for the identifier value
      Comments

      Identifier.system is always case sensitive.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-alt-item-code
      ExampleGeneral: http://www.acme.com/identifiers/patient
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      112. Medication.identifier:altItemCode.value
      Definition

      The portion of the identifier typically relevant to the user and which is unique within the context of the system.

      ShortThe value that is unique
      Comments

      If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

      Control10..1
      This element is affected by the following invariants: ident-1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      ExampleGeneral: 123456
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      114. Medication.identifier:mohBarCode
      Slice NamemohBarCode
      Definition

      Business identifier for this medication.

      ShortBusiness identifier for this medication
      Comments

      The serial number could be included as an identifier.

      NoteThis is a business identifier, not a resource identifier (see discussion)
      Control0..1*
      TypeIdentifier
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      116. Medication.identifier:mohBarCode.use
      Definition

      The purpose of this identifier.

      Shortusual | official | temp | secondary | old (If known)
      Comments

      Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

      Control0..1
      BindingThe codes SHALL be taken from IdentifierUsehttp://hl7.org/fhir/ValueSet/identifier-use|5.0.0
      (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

      Identifies the purpose for this identifier, if known .

      Typecode
      Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      118. Medication.identifier:mohBarCode.type
      Definition

      A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

      ShortDescription of identifier
      Comments

      This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

      Control10..1
      BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodeshttp://hl7.org/fhir/ValueSet/identifier-type|5.0.0
      (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

      A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

      TypeCodeableConcept
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Requirements

      Allows users to make use of identifiers when the identifier system is not known.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      120. Medication.identifier:mohBarCode.system
      Definition

      Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

      ShortThe namespace for the identifier value
      Comments

      Identifier.system is always case sensitive.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-moh-bar-code
      ExampleGeneral: http://www.acme.com/identifiers/patient
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      122. Medication.identifier:mohBarCode.value
      Definition

      The portion of the identifier typically relevant to the user and which is unique within the context of the system.

      ShortThe value that is unique
      Comments

      If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

      Control10..1
      This element is affected by the following invariants: ident-1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      ExampleGeneral: 123456
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      124. Medication.identifier:gtin
      Slice Namegtin
      Definition

      Business identifier for this medication.

      ShortBusiness identifier for this medication
      Comments

      The serial number could be included as an identifier.

      NoteThis is a business identifier, not a resource identifier (see discussion)
      Control0..1*
      TypeIdentifier
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      126. Medication.identifier:gtin.use
      Definition

      The purpose of this identifier.

      Shortusual | official | temp | secondary | old (If known)
      Comments

      Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

      Control0..1
      BindingThe codes SHALL be taken from IdentifierUsehttp://hl7.org/fhir/ValueSet/identifier-use|5.0.0
      (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

      Identifies the purpose for this identifier, if known .

      Typecode
      Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      128. Medication.identifier:gtin.type
      Definition

      A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

      ShortDescription of identifier
      Comments

      This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

      Control10..1
      BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodeshttp://hl7.org/fhir/ValueSet/identifier-type|5.0.0
      (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

      A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

      TypeCodeableConcept
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Requirements

      Allows users to make use of identifiers when the identifier system is not known.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      130. Medication.identifier:gtin.system
      Definition

      Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

      ShortThe namespace for the identifier value
      Comments

      Identifier.system is always case sensitive.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-gtin
      ExampleGeneral: http://www.acme.com/identifiers/patient
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      132. Medication.identifier:gtin.value
      Definition

      The portion of the identifier typically relevant to the user and which is unique within the context of the system.

      ShortThe value that is unique
      Comments

      If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

      Control10..1
      This element is affected by the following invariants: ident-1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      ExampleGeneral: 123456
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      134. Medication.code
      Definition

      A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.

      ShortCodes that identify this medication
      Comments

      Depending on the context of use, the code that was actually selected by the user (prescriber, dispenser, etc.) will have the coding.userSelected set to true. As described in the coding datatype: "A coding may be marked as a "userSelected" if a user selected the particular coded value in a user interface (e.g. the user selects an item in a pick-list). If a user selected coding exists, it is the preferred choice for performing translations etc. Other codes can only be literal translations to alternative code systems, or codes at a lower level of granularity (e.g. a generic code for a vendor-specific primary one).

      Control10..1
      BindingThe codes SHALL be taken from For example codes, see ZAMMSA Medication SKU ValueSethttp://hl7.org/fhir/ValueSet/medication-codes|5.0.0
      (required to http://hapi.moh.gov.zm/fhir/ValueSet/medication-zammsa-sku)
      TypeCodeableConcept
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      136. Medication.code.coding
      Definition

      A reference to a code defined by a terminology system.

      ShortCode defined by a terminology system
      Comments

      Codes may be defined very casually in enumerations, or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information. Ordering of codings is undefined and SHALL NOT be used to infer meaning. Generally, at most only one of the coding values will be labeled as UserSelected = true.

      Control10..1*
      TypeCoding
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Requirements

      Allows for alternative encodings within a code system, and translations to other code systems.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      138. Medication.code.coding.system
      Definition

      The identification of the code system that defines the meaning of the symbol in the code.

      ShortIdentity of the terminology system
      Comments

      The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should be an absolute reference to some definition that establishes the system clearly and unambiguously.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      Need to be unambiguous about the source of the definition of the symbol.

      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-zammsa-sku
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      140. Medication.code.coding.code
      Definition

      A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).

      ShortSymbol in syntax defined by the system
      Control10..1
      This element is affected by the following invariants: cod-1
      Typecode
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      Need to refer to a particular code in the system.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      142. Medication.code.coding.display
      Definition

      A representation of the meaning of the code in the system, following the rules of the system.

      ShortRepresentation defined by the system
      Control0..1
      This element is affected by the following invariants: cod-1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      Need to be able to carry a human-readable meaning of the code for readers that do not know the system.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      144. Medication.code.text
      Definition

      A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.

      ShortPlain text representation of the concept
      Comments

      Very often the text is the same as a displayName of one of the codings.

      Control10..1
      Typestring
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Requirements

      The codes from the terminologies do not always capture the correct meaning with all the nuances of the human using them, or sometimes there is no appropriate code at all. In these cases, the text is used to capture the full meaning of the source.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      146. Medication.status
      Definition

      A code to indicate if the medication is in active use.

      Shortactive | inactive | entered-in-error
      Comments

      This status is intended to identify if the medication in a local system is in active use within a drug database or inventory. For example, a pharmacy system may create a new drug file record for a compounded product "ABC Hospital Special Cream" with an active status. At some point in the future, it may be determined that the drug record was created with an error and the status is changed to "entered in error". This status is not intended to specify if a medication is part of a particular formulary. It is possible that the drug record may be referenced by multiple formularies or catalogues and each of those entries would have a separate status.

      Control10..1
      BindingThe codes SHALL be taken from MedicationStatusCodeshttp://hl7.org/fhir/ValueSet/medication-status|5.0.0
      (required to http://hl7.org/fhir/ValueSet/medication-status|5.0.0)

      A coded concept defining if the medication is in active use.

      Typecode
      Is Modifiertrue because This element changes the interpretation of all descriptive attributes.
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Must Supporttrue
      Summarytrue
      Pattern Valueactive
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      148. Medication.marketingAuthorizationHolder
      Definition

      The company or other legal entity that has authorization, from the appropriate drug regulatory authority, to market a medicine in one or more jurisdictions. Typically abbreviated MAH.Note: The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).

      ShortMarketing authorization holder (e.g. ZAMMSA or manufacturer; align with SDP/contract).Organization that has authorization to market medication
      Control0..1
      TypeReference(Organization)
      Is Modifierfalse
      Must Supporttrue
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      150. Medication.doseForm
      Definition

      Describes the form of the item. Powder; tablets; capsule.

      ShortPharmaceutical dose form (e.g. tablet, syrup, injection)powder | tablets | capsule +
      Comments

      When Medication is referenced from MedicationRequest, this is the ordered form. When Medication is referenced within MedicationDispense, this is the dispensed form. When Medication is referenced within MedicationAdministration, this is administered form.

      Control10..1
      BindingFor example codes, see SNOMEDCTFormCodeshttp://hl7.org/fhir/ValueSet/medication-form-codes|5.0.0
      (example to http://hl7.org/fhir/ValueSet/medication-form-codes|5.0.0)

      A coded concept defining the form of a medication.

      TypeCodeableConcept
      Is Modifierfalse
      Must Supporttrue
      Summaryfalse
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      152. Medication.totalVolume
      Definition

      When the specified product code does not infer a package size, this is the specific amount of drug in the product. For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).

      ShortWhen the specified product code does not infer a package size, this is the specific amount of drug in the product
      Control0..01
      TypeQuantity
      Is Modifierfalse
      Must Supportfalse
      Summarytrue
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      154. Medication.ingredient
      Definition

      Identifies a particular constituent of interest in the product.

      ShortActive or inactive ingredient
      Comments

      The ingredients need not be a complete list. If an ingredient is not specified, this does not indicate whether an ingredient is present or absent. If an ingredient is specified it does not mean that all ingredients are specified. It is possible to specify both inactive and active ingredients.

      Control0..0*
      TypeBackboneElement
      Is Modifierfalse
      Must Supportfalse
      Summaryfalse
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      158. Medication.batch
      Definition

      Information that only applies to packages (not products).

      ShortDetails about packaged medications
      Control0..01
      TypeBackboneElement
      Is Modifierfalse
      Must Supportfalse
      Summaryfalse
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))

      Guidance on how to interpret the contents of this table can be foundhere

      0. Medication
      2. Medication.extension
      SlicingThis element introduces a set of slices on Medication.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
      • value @ url
      • 4. Medication.extension:levelOfAccess
        Slice NamelevelOfAccess
        Control0..*
        TypeExtension(ZM-Core Medication Level of Access) (Extension Type: CodeableConcept)
        6. Medication.extension:fullName
        Slice NamefullName
        Control0..1
        TypeExtension(ZM-Core Medication Full Name) (Extension Type: string)
        8. Medication.extension:genericName
        Slice NamegenericName
        Control0..1
        TypeExtension(ZM-Core Medication Generic Name) (Extension Type: string)
        10. Medication.extension:alternateName
        Slice NamealternateName
        Control0..1
        TypeExtension(ZM-Core Medication Alternate Name) (Extension Type: string)
        12. Medication.extension:description
        Slice Namedescription
        Control0..1
        TypeExtension(ZM-Core Medication Description) (Extension Type: string)
        14. Medication.extension:strengthText
        Slice NamestrengthText
        Control0..1
        TypeExtension(ZM-Core Medication Strength) (Extension Type: string)
        16. Medication.extension:dosageUnit
        Slice NamedosageUnit
        Control0..1
        TypeExtension(ZM-Core Medication Dosage Unit) (Extension Type: CodeableConcept)
        18. Medication.extension:dispensingUnits
        Slice NamedispensingUnits
        Control0..1
        TypeExtension(ZM-Core Medication Dispensing Units) (Extension Type: string)
        20. Medication.extension:dosesPerDispensingUnit
        Slice NamedosesPerDispensingUnit
        Control0..1
        TypeExtension(ZM-Core Medication Doses Per Dispensing Unit) (Extension Type: decimal)
        22. Medication.extension:mslPackSize
        Slice NamemslPackSize
        Control0..1
        TypeExtension(ZM-Core Medication MSL Pack Size (numeric)) (Extension Type: decimal)
        24. Medication.extension:packSizeText
        Slice NamepackSizeText
        Control0..1
        TypeExtension(ZM-Core Medication Pack Size (text)) (Extension Type: string)
        26. Medication.extension:alternatePackSize
        Slice NamealternatePackSize
        Control0..1
        TypeExtension(ZM-Core Medication Alternate Pack Size) (Extension Type: string)
        28. Medication.extension:packWeight
        Slice NamepackWeight
        Control0..1
        TypeExtension(ZM-Core Medication Pack Weight) (Extension Type: decimal)
        30. Medication.extension:packsPerCarton
        Slice NamepacksPerCarton
        Control0..1
        TypeExtension(ZM-Core Medication Packs Per Carton) (Extension Type: decimal)
        32. Medication.extension:cartonsPerPallet
        Slice NamecartonsPerPallet
        Control0..1
        TypeExtension(ZM-Core Medication Cartons Per Pallet) (Extension Type: decimal)
        34. Medication.extension:shelfLife
        Slice NameshelfLife
        Control0..1
        TypeExtension(ZM-Core Medication Shelf Life) (Extension Type: string)
        36. Medication.extension:storageInstructions
        Slice NamestorageInstructions
        Control0..1
        TypeExtension(ZM-Core Medication Storage Instructions) (Extension Type: string)
        38. Medication.extension:transportInstructions
        Slice NametransportInstructions
        Control0..1
        TypeExtension(ZM-Core Medication Transport Instructions) (Extension Type: string)
        40. Medication.extension:storeRefrigerated
        Slice NamestoreRefrigerated
        Control0..1
        TypeExtension(ZM-Core Medication Store Refrigerated) (Extension Type: boolean)
        42. Medication.extension:routeOfAdministration
        Slice NamerouteOfAdministration
        Control0..1
        TypeExtension(ZM-Core Medication Route of Administration) (Extension Type: CodeableConcept)
        44. Medication.extension:atcClassification
        Slice NameatcClassification
        Control0..*
        TypeExtension(ZM-Core Medication ATC Classification) (Extension Type: CodeableConcept)
        46. Medication.extension:storageClassification
        Slice NamestorageClassification
        Control0..1
        TypeExtension(ZM-Core Medication Storage Classification) (Extension Type: CodeableConcept)
        48. Medication.extension:storeRoomTemperature
        Slice NamestoreRoomTemperature
        Control0..1
        TypeExtension(ZM-Core Medication Store Room Temperature) (Extension Type: decimal)
        50. Medication.extension:isHazardous
        Slice NameisHazardous
        Control0..1
        TypeExtension(ZM-Core Medication Hazardous) (Extension Type: boolean)
        52. Medication.extension:isFlammable
        Slice NameisFlammable
        Control0..1
        TypeExtension(ZM-Core Medication Flammable) (Extension Type: boolean)
        54. Medication.extension:isControlledSubstance
        Slice NameisControlledSubstance
        Control0..1
        TypeExtension(ZM-Core Medication Controlled Substance) (Extension Type: boolean)
        56. Medication.extension:isLightSensitive
        Slice NameisLightSensitive
        Control0..1
        TypeExtension(ZM-Core Medication Light Sensitive) (Extension Type: boolean)
        58. Medication.extension:approvedByWHO
        Slice NameapprovedByWHO
        Control0..1
        TypeExtension(ZM-Core Medication WHO Approved) (Extension Type: boolean)
        60. Medication.extension:isFullSupply
        Slice NameisFullSupply
        Control0..1
        TypeExtension(ZM-Core Medication Full Supply) (Extension Type: boolean)
        62. Medication.extension:isTracer
        Slice NameisTracer
        Control0..1
        TypeExtension(ZM-Core Medication Tracer) (Extension Type: boolean)
        64. Medication.extension:packRoundingThreshold
        Slice NamepackRoundingThreshold
        Control0..1
        TypeExtension(ZM-Core Medication Pack Rounding Threshold) (Extension Type: decimal)
        66. Medication.extension:canRoundToZero
        Slice NamecanRoundToZero
        Control0..1
        TypeExtension(ZM-Core Medication Can Round To Zero) (Extension Type: boolean)
        68. Medication.extension:archived
        Slice Namearchived
        Control0..1
        TypeExtension(ZM-Core Medication Archived) (Extension Type: boolean)
        70. Medication.extension:lsiEnabled
        Slice NamelsiEnabled
        Control0..1
        TypeExtension(Medication LSI Enabled) (Extension Type: boolean)
        72. Medication.extension:price
        Slice Nameprice
        Control0..1
        TypeExtension(ZM-Core Medication Price) (Extension Type: Money)
        74. Medication.extension:productType
        Slice NameproductType
        Control0..1
        TypeExtension(ZM-Core Medication Product Type) (Extension Type: CodeableConcept)
        76. Medication.extension:productGroup
        Slice NameproductGroup
        Control0..1
        TypeExtension(ZM-Core Medication Product Group) (Extension Type: CodeableConcept)
        78. Medication.identifier
        NoteThis is a business identifier, not a resource identifier (see discussion)
        Control2..?
        Must Supporttrue
        SlicingThis element introduces a set of slices on Medication.identifier. The slices areUnordered and Open, and can be differentiated using the following discriminators:
        • value @ system
        • 80. Medication.identifier:programItemCode
          Slice NameprogramItemCode
          NoteThis is a business identifier, not a resource identifier (see discussion)
          Control1..1
          Must Supporttrue
          82. Medication.identifier:programItemCode.type
          Control1..?
          Must Supporttrue
          84. Medication.identifier:programItemCode.system
          Control1..?
          Must Supporttrue
          Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-program-item-code
          86. Medication.identifier:programItemCode.value
          Control1..?
          Must Supporttrue
          88. Medication.identifier:zammsaSKU
          Slice NamezammsaSKU
          NoteThis is a business identifier, not a resource identifier (see discussion)
          Control1..1
          Must Supporttrue
          90. Medication.identifier:zammsaSKU.type
          Control1..?
          Must Supporttrue
          92. Medication.identifier:zammsaSKU.system
          Control1..?
          Must Supporttrue
          Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-zammsa-sku
          94. Medication.identifier:zammsaSKU.value
          Control1..?
          Must Supporttrue
          96. Medication.identifier:altItemCode
          Slice NamealtItemCode
          NoteThis is a business identifier, not a resource identifier (see discussion)
          Control0..1
          Must Supporttrue
          98. Medication.identifier:altItemCode.system
          Control1..?
          Must Supporttrue
          Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-alt-item-code
          100. Medication.identifier:altItemCode.value
          Control1..?
          Must Supporttrue
          102. Medication.identifier:mohBarCode
          Slice NamemohBarCode
          NoteThis is a business identifier, not a resource identifier (see discussion)
          Control0..1
          Must Supporttrue
          104. Medication.identifier:mohBarCode.type
          Control1..?
          Must Supporttrue
          106. Medication.identifier:mohBarCode.system
          Control1..?
          Must Supporttrue
          Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-moh-bar-code
          108. Medication.identifier:mohBarCode.value
          Control1..?
          Must Supporttrue
          110. Medication.identifier:gtin
          Slice Namegtin
          NoteThis is a business identifier, not a resource identifier (see discussion)
          Control0..1
          Must Supporttrue
          112. Medication.identifier:gtin.type
          Control1..?
          Must Supporttrue
          114. Medication.identifier:gtin.system
          Control1..?
          Must Supporttrue
          Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-gtin
          116. Medication.identifier:gtin.value
          Control1..?
          Must Supporttrue
          118. Medication.code
          Control1..?
          BindingThe codes SHALL be taken from ZAMMSA Medication SKU ValueSet
          (required to http://hapi.moh.gov.zm/fhir/ValueSet/medication-zammsa-sku)
          Must Supporttrue
          120. Medication.code.coding
          Control1..1
          Must Supporttrue
          122. Medication.code.coding.system
          Control1..?
          Must Supporttrue
          Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-zammsa-sku
          124. Medication.code.coding.code
          Control1..?
          Must Supporttrue
          126. Medication.code.coding.display
          Must Supporttrue
          128. Medication.code.text
          Control1..?
          Must Supporttrue
          130. Medication.status
          Control1..?
          Must Supporttrue
          Pattern Valueactive
          132. Medication.marketingAuthorizationHolder
          ShortMarketing authorization holder (e.g. ZAMMSA or manufacturer; align with SDP/contract).
          Must Supporttrue
          134. Medication.doseForm
          ShortPharmaceutical dose form (e.g. tablet, syrup, injection)
          Control1..?
          Must Supporttrue
          136. Medication.totalVolume
          Control0..0
          138. Medication.ingredient
          Control0..0
          140. Medication.batch
          Control0..0

          Guidance on how to interpret the contents of this table can be foundhere

          0. Medication
          Definition

          This resource is primarily used for the identification and definition of a medication, including ingredients, for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use.

          ShortDefinition of a Medication
          Control0..*
          Is Modifierfalse
          Must Supportfalse
          Summaryfalse
          Invariantsdom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources (contained.contained.empty())
          dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource (contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty())
          dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated (contained.meta.versionId.empty() and contained.meta.lastUpdated.empty())
          dom-5: If a resource is contained in another resource, it SHALL NOT have a security label (contained.meta.security.empty())
          dom-6: A resource should have narrative for robust management (text.`div`.exists())
          2. Medication.id
          Definition

          The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.

          ShortLogical id of this artifact
          Comments

          Within the context of the FHIR RESTful interactions, the resource has an id except for cases like the create and conditional update. Otherwise, the use of the resouce id depends on the given use case.

          Control0..1
          Typeid
          Is Modifierfalse
          Must Supportfalse
          Summarytrue
          4. Medication.meta
          Definition

          The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.

          ShortMetadata about the resource
          Control0..1
          TypeMeta
          Is Modifierfalse
          Must Supportfalse
          Summarytrue
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          6. Medication.implicitRules
          Definition

          A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.

          ShortA set of rules under which this content was created
          Comments

          Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of its narrative along with other profiles, value sets, etc.

          Control0..1
          Typeuri
          Is Modifiertrue because This element is labeled as a modifier because the implicit rules may provide additional knowledge about the resource that modifies its meaning or interpretation
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          Must Supportfalse
          Summarytrue
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          8. Medication.language
          Definition

          The base language in which the resource is written.

          ShortLanguage of the resource content
          Comments

          Language is provided to support indexing and accessibility (typically, services such as text to speech use the language tag). The html language tag in the narrative applies to the narrative. The language tag on the resource may be used to specify the language of other presentations generated from the data in the resource. Not all the content has to be in the base language. The Resource.language should not be assumed to apply to the narrative automatically. If a language is specified, it should it also be specified on the div element in the html (see rules in HTML5 for information about the relationship between xml:lang and the html lang attribute).

          Control0..1
          BindingThe codes SHALL be taken from AllLanguages
          (required to http://hl7.org/fhir/ValueSet/all-languages|5.0.0)

          IETF language tag for a human language

          Typecode
          Is Modifierfalse
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          Must Supportfalse
          Summaryfalse
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          10. Medication.text
          Definition

          A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.

          ShortText summary of the resource, for human interpretation
          Comments

          Contained resources do not have a narrative. Resources that are not contained SHOULD have a narrative. In some cases, a resource may only have text with little or no additional discrete data (as long as all minOccurs=1 elements are satisfied). This may be necessary for data from legacy systems where information is captured as a "text blob" or where text is additionally entered raw or narrated and encoded information is added later.

          Control0..1
          This element is affected by the following invariants: dom-6
          TypeNarrative
          Is Modifierfalse
          Must Supportfalse
          Summaryfalse
          Alternate Namesnarrative, html, xhtml, display
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          12. Medication.contained
          Definition

          These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, nor can they have their own independent transaction scope. This is allowed to be a Parameters resource if and only if it is referenced by a resource that provides context/meaning.

          ShortContained, inline Resources
          Comments

          This should never be done when the content can be identified properly, as once identification is lost, it is extremely difficult (and context dependent) to restore it again. Contained resources may have profiles and tags in their meta elements, but SHALL NOT have security labels.

          Control0..*
          This element is affected by the following invariants: dom-2, dom-4, dom-3, dom-5
          TypeResource
          Is Modifierfalse
          Must Supportfalse
          Summaryfalse
          Alternate Namesinline resources, anonymous resources, contained resources
          14. Medication.extension
          Definition

          An Extension

          ShortExtension
          Control0..*
          TypeExtension
          Is Modifierfalse
          Must Supportfalse
          Summaryfalse
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
          SlicingThis element introduces a set of slices on Medication.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
          • value @ url
          • 16. Medication.extension:levelOfAccess
            Slice NamelevelOfAccess
            Definition

            Level of access / level of care at which this medicine is used (e.g. Health Post, Clinic, Hospital).

            ShortZM-Core Medication Level of Access
            Control0..*
            TypeExtension(ZM-Core Medication Level of Access) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            18. Medication.extension:fullName
            Slice NamefullName
            Definition

            Full trade name of the product as it appears in the Master List.

            ShortZM-Core Medication Full Name
            Control0..1
            TypeExtension(ZM-Core Medication Full Name) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            20. Medication.extension:genericName
            Slice NamegenericName
            Definition

            Generic name of the medicine.

            ShortZM-Core Medication Generic Name
            Control0..1
            TypeExtension(ZM-Core Medication Generic Name) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            22. Medication.extension:alternateName
            Slice NamealternateName
            Definition

            Alternate or brand name of the medicine, if any.

            ShortZM-Core Medication Alternate Name
            Control0..1
            TypeExtension(ZM-Core Medication Alternate Name) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            24. Medication.extension:description
            Slice Namedescription
            Definition

            Long description of the product from the Master List.

            ShortZM-Core Medication Description
            Control0..1
            TypeExtension(ZM-Core Medication Description) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            26. Medication.extension:strengthText
            Slice NamestrengthText
            Definition

            Product strength as free text (e.g. '500mg', '500mg/5ml').

            ShortZM-Core Medication Strength
            Control0..1
            TypeExtension(ZM-Core Medication Strength) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            28. Medication.extension:dosageUnit
            Slice NamedosageUnit
            Definition

            Unit of measure for the product strength (e.g. mg, ml, IU).

            ShortZM-Core Medication Dosage Unit
            Control0..1
            TypeExtension(ZM-Core Medication Dosage Unit) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            30. Medication.extension:dispensingUnits
            Slice NamedispensingUnits
            Definition

            Unit in which the product is dispensed (e.g. tablet, vial, bottle).

            ShortZM-Core Medication Dispensing Units
            Control0..1
            TypeExtension(ZM-Core Medication Dispensing Units) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            32. Medication.extension:dosesPerDispensingUnit
            Slice NamedosesPerDispensingUnit
            Definition

            Number of doses per dispensing unit.

            ShortZM-Core Medication Doses Per Dispensing Unit
            Control0..1
            TypeExtension(ZM-Core Medication Doses Per Dispensing Unit) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            34. Medication.extension:mslPackSize
            Slice NamemslPackSize
            Definition

            Numeric MSL pack size (e.g. 100, 10).

            ShortZM-Core Medication MSL Pack Size (numeric)
            Control0..1
            TypeExtension(ZM-Core Medication MSL Pack Size (numeric)) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            36. Medication.extension:packSizeText
            Slice NamepackSizeText
            Definition

            Pack size description (e.g. 'Pack of 100', 'Each').

            ShortZM-Core Medication Pack Size (text)
            Control0..1
            TypeExtension(ZM-Core Medication Pack Size (text)) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            38. Medication.extension:alternatePackSize
            Slice NamealternatePackSize
            Definition

            Alternate pack size description, if used in Master List.

            ShortZM-Core Medication Alternate Pack Size
            Control0..1
            TypeExtension(ZM-Core Medication Alternate Pack Size) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            40. Medication.extension:packWeight
            Slice NamepackWeight
            Definition

            Weight of a single pack, typically in kilograms.

            ShortZM-Core Medication Pack Weight
            Control0..1
            TypeExtension(ZM-Core Medication Pack Weight) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            42. Medication.extension:packsPerCarton
            Slice NamepacksPerCarton
            Definition

            Number of packs per carton.

            ShortZM-Core Medication Packs Per Carton
            Control0..1
            TypeExtension(ZM-Core Medication Packs Per Carton) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            44. Medication.extension:cartonsPerPallet
            Slice NamecartonsPerPallet
            Definition

            Number of cartons per pallet.

            ShortZM-Core Medication Cartons Per Pallet
            Control0..1
            TypeExtension(ZM-Core Medication Cartons Per Pallet) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            46. Medication.extension:shelfLife
            Slice NameshelfLife
            Definition

            Product shelf-life description (e.g. 24 months).

            ShortZM-Core Medication Shelf Life
            Control0..1
            TypeExtension(ZM-Core Medication Shelf Life) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            48. Medication.extension:storageInstructions
            Slice NamestorageInstructions
            Definition

            Free-text storage instructions.

            ShortZM-Core Medication Storage Instructions
            Control0..1
            TypeExtension(ZM-Core Medication Storage Instructions) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            50. Medication.extension:transportInstructions
            Slice NametransportInstructions
            Definition

            Free-text transport instructions.

            ShortZM-Core Medication Transport Instructions
            Control0..1
            TypeExtension(ZM-Core Medication Transport Instructions) (Extension Type: string)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            52. Medication.extension:storeRefrigerated
            Slice NamestoreRefrigerated
            Definition

            Indicates whether the product must be stored refrigerated.

            ShortZM-Core Medication Store Refrigerated
            Control0..1
            TypeExtension(ZM-Core Medication Store Refrigerated) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            54. Medication.extension:routeOfAdministration
            Slice NamerouteOfAdministration
            Definition

            Route of administration for this medicine (e.g. oral, IM, IV).

            ShortZM-Core Medication Route of Administration
            Control0..1
            TypeExtension(ZM-Core Medication Route of Administration) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            56. Medication.extension:atcClassification
            Slice NameatcClassification
            Definition

            WHO ATC classification for the product.

            ShortZM-Core Medication ATC Classification
            Control0..*
            TypeExtension(ZM-Core Medication ATC Classification) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            58. Medication.extension:storageClassification
            Slice NamestorageClassification
            Definition

            Storage classification (e.g. Room temperature, Cold chain, Freezer).

            ShortZM-Core Medication Storage Classification
            Control0..1
            TypeExtension(ZM-Core Medication Storage Classification) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            60. Medication.extension:storeRoomTemperature
            Slice NamestoreRoomTemperature
            Definition

            Storage temperature in degrees Celsius for room temperature storage.

            ShortZM-Core Medication Store Room Temperature
            Control0..1
            TypeExtension(ZM-Core Medication Store Room Temperature) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            62. Medication.extension:isHazardous
            Slice NameisHazardous
            Definition

            Indicates whether the product is hazardous.

            ShortZM-Core Medication Hazardous
            Control0..1
            TypeExtension(ZM-Core Medication Hazardous) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            64. Medication.extension:isFlammable
            Slice NameisFlammable
            Definition

            Indicates whether the product is flammable.

            ShortZM-Core Medication Flammable
            Control0..1
            TypeExtension(ZM-Core Medication Flammable) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            66. Medication.extension:isControlledSubstance
            Slice NameisControlledSubstance
            Definition

            Indicates whether the product is a controlled substance.

            ShortZM-Core Medication Controlled Substance
            Control0..1
            TypeExtension(ZM-Core Medication Controlled Substance) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            68. Medication.extension:isLightSensitive
            Slice NameisLightSensitive
            Definition

            Indicates whether the product is light sensitive.

            ShortZM-Core Medication Light Sensitive
            Control0..1
            TypeExtension(ZM-Core Medication Light Sensitive) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            70. Medication.extension:approvedByWHO
            Slice NameapprovedByWHO
            Definition

            Indicates whether the product is WHO prequalified / approved.

            ShortZM-Core Medication WHO Approved
            Control0..1
            TypeExtension(ZM-Core Medication WHO Approved) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            72. Medication.extension:isFullSupply
            Slice NameisFullSupply
            Definition

            Indicates if the product is part of the full-supply list.

            ShortZM-Core Medication Full Supply
            Control0..1
            TypeExtension(ZM-Core Medication Full Supply) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            74. Medication.extension:isTracer
            Slice NameisTracer
            Definition

            Indicates whether the product is a tracer medicine.

            ShortZM-Core Medication Tracer
            Control0..1
            TypeExtension(ZM-Core Medication Tracer) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            76. Medication.extension:packRoundingThreshold
            Slice NamepackRoundingThreshold
            Definition

            Threshold at which pack quantities are rounded up or down.

            ShortZM-Core Medication Pack Rounding Threshold
            Control0..1
            TypeExtension(ZM-Core Medication Pack Rounding Threshold) (Extension Type: decimal)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            78. Medication.extension:canRoundToZero
            Slice NamecanRoundToZero
            Definition

            Indicates whether calculated order quantities can be rounded down to zero.

            ShortZM-Core Medication Can Round To Zero
            Control0..1
            TypeExtension(ZM-Core Medication Can Round To Zero) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            80. Medication.extension:archived
            Slice Namearchived
            Definition

            Indicates whether the product is archived or no longer active in the catalogue.

            ShortZM-Core Medication Archived
            Control0..1
            TypeExtension(ZM-Core Medication Archived) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            82. Medication.extension:lsiEnabled
            Slice NamelsiEnabled
            Definition

            Indicates whether this medication is enabled for the Logistics Seasonality Index (LSI).

            ShortMedication LSI Enabled
            Control0..1
            TypeExtension(Medication LSI Enabled) (Extension Type: boolean)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            84. Medication.extension:price
            Slice Nameprice
            Definition

            Unit price of the product (e.g. pack price) as a Money value.

            ShortZM-Core Medication Price
            Control0..1
            TypeExtension(ZM-Core Medication Price) (Extension Type: Money)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            86. Medication.extension:productType
            Slice NameproductType
            Definition

            High-level product type (e.g. Medicine, Lab Reagent, Device).

            ShortZM-Core Medication Product Type
            Control0..1
            TypeExtension(ZM-Core Medication Product Type) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            88. Medication.extension:productGroup
            Slice NameproductGroup
            Definition

            Programmatic grouping (e.g. ARV, TB, Malaria, RMNCH).

            ShortZM-Core Medication Product Group
            Control0..1
            TypeExtension(ZM-Core Medication Product Group) (Extension Type: CodeableConcept)
            Is Modifierfalse
            Must Supportfalse
            Summaryfalse
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            90. Medication.modifierExtension
            Definition

            May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

            ShortExtensions that cannot be ignored
            Comments

            There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

            Control0..*
            TypeExtension
            Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the resource that contains them
            Must Supportfalse
            Summarytrue
            Requirements

            Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

            Alternate Namesextensions, user content
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            92. Medication.identifier
            Definition

            Business identifier for this medication.

            ShortBusiness identifier for this medication
            Comments

            The serial number could be included as an identifier.

            NoteThis is a business identifier, not a resource identifier (see discussion)
            Control2..*
            TypeIdentifier
            Is Modifierfalse
            Must Supporttrue
            Summarytrue
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            SlicingThis element introduces a set of slices on Medication.identifier. The slices areUnordered and Open, and can be differentiated using the following discriminators:
            • value @ system
            • 94. Medication.identifier:programItemCode
              Slice NameprogramItemCode
              Definition

              Business identifier for this medication.

              ShortBusiness identifier for this medication
              Comments

              The serial number could be included as an identifier.

              NoteThis is a business identifier, not a resource identifier (see discussion)
              Control1..1
              TypeIdentifier
              Is Modifierfalse
              Must Supporttrue
              Summarytrue
              Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
              96. Medication.identifier:programItemCode.id
              Definition

              Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

              ShortUnique id for inter-element referencing
              Control0..1
              This element is affected by the following invariants: ele-1
              Typeid
              Is Modifierfalse
              XML FormatIn the XML format, this property is represented as an attribute.
              Summaryfalse
              98. Medication.identifier:programItemCode.extension
              Definition

              May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

              ShortAdditional content defined by implementations
              Comments

              There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

              Control0..*
              TypeExtension
              Is Modifierfalse
              Summaryfalse
              Alternate Namesextensions, user content
              Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
              ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
              SlicingThis element introduces a set of slices on Medication.identifier.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
              • value @ url
              • 100. Medication.identifier:programItemCode.use
                Definition

                The purpose of this identifier.

                Shortusual | official | temp | secondary | old (If known)
                Comments

                Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

                Control0..1
                BindingThe codes SHALL be taken from IdentifierUse
                (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

                Identifies the purpose for this identifier, if known .

                Typecode
                Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
                Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                Summarytrue
                Requirements

                Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                102. Medication.identifier:programItemCode.type
                Definition

                A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

                ShortDescription of identifier
                Comments

                This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

                Control1..1
                BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodes
                (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

                A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

                TypeCodeableConcept
                Is Modifierfalse
                Must Supporttrue
                Summarytrue
                Requirements

                Allows users to make use of identifiers when the identifier system is not known.

                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                104. Medication.identifier:programItemCode.system
                Definition

                Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

                ShortThe namespace for the identifier value
                Comments

                Identifier.system is always case sensitive.

                Control1..1
                Typeuri
                Is Modifierfalse
                Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                Must Supporttrue
                Summarytrue
                Requirements

                There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

                Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-program-item-code
                ExampleGeneral: http://www.acme.com/identifiers/patient
                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                106. Medication.identifier:programItemCode.value
                Definition

                The portion of the identifier typically relevant to the user and which is unique within the context of the system.

                ShortThe value that is unique
                Comments

                If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

                Control1..1
                This element is affected by the following invariants: ident-1
                Typestring
                Is Modifierfalse
                Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                Must Supporttrue
                Summarytrue
                ExampleGeneral: 123456
                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                108. Medication.identifier:programItemCode.period
                Definition

                Time period during which identifier is/was valid for use.

                ShortTime period when id is/was valid for use
                Control0..1
                TypePeriod
                Is Modifierfalse
                Summarytrue
                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                110. Medication.identifier:programItemCode.assigner
                Definition

                Organization that issued/manages the identifier.

                ShortOrganization that issued id (may be just text)
                Comments

                The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization.

                Control0..1
                TypeReference(Organization)
                Is Modifierfalse
                Summarytrue
                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                112. Medication.identifier:zammsaSKU
                Slice NamezammsaSKU
                Definition

                Business identifier for this medication.

                ShortBusiness identifier for this medication
                Comments

                The serial number could be included as an identifier.

                NoteThis is a business identifier, not a resource identifier (see discussion)
                Control1..1
                TypeIdentifier
                Is Modifierfalse
                Must Supporttrue
                Summarytrue
                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                114. Medication.identifier:zammsaSKU.id
                Definition

                Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

                ShortUnique id for inter-element referencing
                Control0..1
                This element is affected by the following invariants: ele-1
                Typeid
                Is Modifierfalse
                XML FormatIn the XML format, this property is represented as an attribute.
                Summaryfalse
                116. Medication.identifier:zammsaSKU.extension
                Definition

                May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

                ShortAdditional content defined by implementations
                Comments

                There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

                Control0..*
                TypeExtension
                Is Modifierfalse
                Summaryfalse
                Alternate Namesextensions, user content
                Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
                SlicingThis element introduces a set of slices on Medication.identifier.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
                • value @ url
                • 118. Medication.identifier:zammsaSKU.use
                  Definition

                  The purpose of this identifier.

                  Shortusual | official | temp | secondary | old (If known)
                  Comments

                  Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

                  Control0..1
                  BindingThe codes SHALL be taken from IdentifierUse
                  (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

                  Identifies the purpose for this identifier, if known .

                  Typecode
                  Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
                  Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                  Summarytrue
                  Requirements

                  Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  120. Medication.identifier:zammsaSKU.type
                  Definition

                  A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

                  ShortDescription of identifier
                  Comments

                  This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

                  Control1..1
                  BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodes
                  (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

                  A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

                  TypeCodeableConcept
                  Is Modifierfalse
                  Must Supporttrue
                  Summarytrue
                  Requirements

                  Allows users to make use of identifiers when the identifier system is not known.

                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  122. Medication.identifier:zammsaSKU.system
                  Definition

                  Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

                  ShortThe namespace for the identifier value
                  Comments

                  Identifier.system is always case sensitive.

                  Control1..1
                  Typeuri
                  Is Modifierfalse
                  Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                  Must Supporttrue
                  Summarytrue
                  Requirements

                  There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

                  Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-zammsa-sku
                  ExampleGeneral: http://www.acme.com/identifiers/patient
                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  124. Medication.identifier:zammsaSKU.value
                  Definition

                  The portion of the identifier typically relevant to the user and which is unique within the context of the system.

                  ShortThe value that is unique
                  Comments

                  If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

                  Control1..1
                  This element is affected by the following invariants: ident-1
                  Typestring
                  Is Modifierfalse
                  Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                  Must Supporttrue
                  Summarytrue
                  ExampleGeneral: 123456
                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  126. Medication.identifier:zammsaSKU.period
                  Definition

                  Time period during which identifier is/was valid for use.

                  ShortTime period when id is/was valid for use
                  Control0..1
                  TypePeriod
                  Is Modifierfalse
                  Summarytrue
                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  128. Medication.identifier:zammsaSKU.assigner
                  Definition

                  Organization that issued/manages the identifier.

                  ShortOrganization that issued id (may be just text)
                  Comments

                  The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization.

                  Control0..1
                  TypeReference(Organization)
                  Is Modifierfalse
                  Summarytrue
                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  130. Medication.identifier:altItemCode
                  Slice NamealtItemCode
                  Definition

                  Business identifier for this medication.

                  ShortBusiness identifier for this medication
                  Comments

                  The serial number could be included as an identifier.

                  NoteThis is a business identifier, not a resource identifier (see discussion)
                  Control0..1
                  TypeIdentifier
                  Is Modifierfalse
                  Must Supporttrue
                  Summarytrue
                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  132. Medication.identifier:altItemCode.id
                  Definition

                  Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

                  ShortUnique id for inter-element referencing
                  Control0..1
                  This element is affected by the following invariants: ele-1
                  Typeid
                  Is Modifierfalse
                  XML FormatIn the XML format, this property is represented as an attribute.
                  Summaryfalse
                  134. Medication.identifier:altItemCode.extension
                  Definition

                  May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

                  ShortAdditional content defined by implementations
                  Comments

                  There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

                  Control0..*
                  TypeExtension
                  Is Modifierfalse
                  Summaryfalse
                  Alternate Namesextensions, user content
                  Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                  ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
                  SlicingThis element introduces a set of slices on Medication.identifier.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
                  • value @ url
                  • 136. Medication.identifier:altItemCode.use
                    Definition

                    The purpose of this identifier.

                    Shortusual | official | temp | secondary | old (If known)
                    Comments

                    Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

                    Control0..1
                    BindingThe codes SHALL be taken from IdentifierUse
                    (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

                    Identifies the purpose for this identifier, if known .

                    Typecode
                    Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
                    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                    Summarytrue
                    Requirements

                    Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    138. Medication.identifier:altItemCode.type
                    Definition

                    A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

                    ShortDescription of identifier
                    Comments

                    This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

                    Control0..1
                    BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodes
                    (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

                    A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

                    TypeCodeableConcept
                    Is Modifierfalse
                    Summarytrue
                    Requirements

                    Allows users to make use of identifiers when the identifier system is not known.

                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    140. Medication.identifier:altItemCode.system
                    Definition

                    Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

                    ShortThe namespace for the identifier value
                    Comments

                    Identifier.system is always case sensitive.

                    Control1..1
                    Typeuri
                    Is Modifierfalse
                    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                    Must Supporttrue
                    Summarytrue
                    Requirements

                    There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

                    Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-alt-item-code
                    ExampleGeneral: http://www.acme.com/identifiers/patient
                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    142. Medication.identifier:altItemCode.value
                    Definition

                    The portion of the identifier typically relevant to the user and which is unique within the context of the system.

                    ShortThe value that is unique
                    Comments

                    If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

                    Control1..1
                    This element is affected by the following invariants: ident-1
                    Typestring
                    Is Modifierfalse
                    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                    Must Supporttrue
                    Summarytrue
                    ExampleGeneral: 123456
                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    144. Medication.identifier:altItemCode.period
                    Definition

                    Time period during which identifier is/was valid for use.

                    ShortTime period when id is/was valid for use
                    Control0..1
                    TypePeriod
                    Is Modifierfalse
                    Summarytrue
                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    146. Medication.identifier:altItemCode.assigner
                    Definition

                    Organization that issued/manages the identifier.

                    ShortOrganization that issued id (may be just text)
                    Comments

                    The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization.

                    Control0..1
                    TypeReference(Organization)
                    Is Modifierfalse
                    Summarytrue
                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    148. Medication.identifier:mohBarCode
                    Slice NamemohBarCode
                    Definition

                    Business identifier for this medication.

                    ShortBusiness identifier for this medication
                    Comments

                    The serial number could be included as an identifier.

                    NoteThis is a business identifier, not a resource identifier (see discussion)
                    Control0..1
                    TypeIdentifier
                    Is Modifierfalse
                    Must Supporttrue
                    Summarytrue
                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    150. Medication.identifier:mohBarCode.id
                    Definition

                    Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

                    ShortUnique id for inter-element referencing
                    Control0..1
                    This element is affected by the following invariants: ele-1
                    Typeid
                    Is Modifierfalse
                    XML FormatIn the XML format, this property is represented as an attribute.
                    Summaryfalse
                    152. Medication.identifier:mohBarCode.extension
                    Definition

                    May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

                    ShortAdditional content defined by implementations
                    Comments

                    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

                    Control0..*
                    TypeExtension
                    Is Modifierfalse
                    Summaryfalse
                    Alternate Namesextensions, user content
                    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
                    SlicingThis element introduces a set of slices on Medication.identifier.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
                    • value @ url
                    • 154. Medication.identifier:mohBarCode.use
                      Definition

                      The purpose of this identifier.

                      Shortusual | official | temp | secondary | old (If known)
                      Comments

                      Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

                      Control0..1
                      BindingThe codes SHALL be taken from IdentifierUse
                      (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

                      Identifies the purpose for this identifier, if known .

                      Typecode
                      Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
                      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                      Summarytrue
                      Requirements

                      Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      156. Medication.identifier:mohBarCode.type
                      Definition

                      A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

                      ShortDescription of identifier
                      Comments

                      This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

                      Control1..1
                      BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodes
                      (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

                      A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

                      TypeCodeableConcept
                      Is Modifierfalse
                      Must Supporttrue
                      Summarytrue
                      Requirements

                      Allows users to make use of identifiers when the identifier system is not known.

                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      158. Medication.identifier:mohBarCode.system
                      Definition

                      Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

                      ShortThe namespace for the identifier value
                      Comments

                      Identifier.system is always case sensitive.

                      Control1..1
                      Typeuri
                      Is Modifierfalse
                      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                      Must Supporttrue
                      Summarytrue
                      Requirements

                      There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

                      Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-moh-bar-code
                      ExampleGeneral: http://www.acme.com/identifiers/patient
                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      160. Medication.identifier:mohBarCode.value
                      Definition

                      The portion of the identifier typically relevant to the user and which is unique within the context of the system.

                      ShortThe value that is unique
                      Comments

                      If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

                      Control1..1
                      This element is affected by the following invariants: ident-1
                      Typestring
                      Is Modifierfalse
                      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                      Must Supporttrue
                      Summarytrue
                      ExampleGeneral: 123456
                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      162. Medication.identifier:mohBarCode.period
                      Definition

                      Time period during which identifier is/was valid for use.

                      ShortTime period when id is/was valid for use
                      Control0..1
                      TypePeriod
                      Is Modifierfalse
                      Summarytrue
                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      164. Medication.identifier:mohBarCode.assigner
                      Definition

                      Organization that issued/manages the identifier.

                      ShortOrganization that issued id (may be just text)
                      Comments

                      The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization.

                      Control0..1
                      TypeReference(Organization)
                      Is Modifierfalse
                      Summarytrue
                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      166. Medication.identifier:gtin
                      Slice Namegtin
                      Definition

                      Business identifier for this medication.

                      ShortBusiness identifier for this medication
                      Comments

                      The serial number could be included as an identifier.

                      NoteThis is a business identifier, not a resource identifier (see discussion)
                      Control0..1
                      TypeIdentifier
                      Is Modifierfalse
                      Must Supporttrue
                      Summarytrue
                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      168. Medication.identifier:gtin.id
                      Definition

                      Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

                      ShortUnique id for inter-element referencing
                      Control0..1
                      This element is affected by the following invariants: ele-1
                      Typeid
                      Is Modifierfalse
                      XML FormatIn the XML format, this property is represented as an attribute.
                      Summaryfalse
                      170. Medication.identifier:gtin.extension
                      Definition

                      May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

                      ShortAdditional content defined by implementations
                      Comments

                      There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

                      Control0..*
                      TypeExtension
                      Is Modifierfalse
                      Summaryfalse
                      Alternate Namesextensions, user content
                      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                      ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
                      SlicingThis element introduces a set of slices on Medication.identifier.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
                      • value @ url
                      • 172. Medication.identifier:gtin.use
                        Definition

                        The purpose of this identifier.

                        Shortusual | official | temp | secondary | old (If known)
                        Comments

                        Applications can assume that an identifier is permanent unless it explicitly says that it is temporary.

                        Control0..1
                        BindingThe codes SHALL be taken from IdentifierUse
                        (required to http://hl7.org/fhir/ValueSet/identifier-use|5.0.0)

                        Identifies the purpose for this identifier, if known .

                        Typecode
                        Is Modifiertrue because This is labeled as "Is Modifier" because applications should not mistake a temporary id for a permanent one.
                        Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                        Summarytrue
                        Requirements

                        Allows the appropriate identifier for a particular context of use to be selected from among a set of identifiers.

                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        174. Medication.identifier:gtin.type
                        Definition

                        A coded type for the identifier that can be used to determine which identifier to use for a specific purpose.

                        ShortDescription of identifier
                        Comments

                        This element deals only with general categories of identifiers. It SHOULD not be used for codes that correspond 1..1 with the Identifier.system. Some identifiers may fall into multiple categories due to common usage. Where the system is known, a type is unnecessary because the type is always part of the system definition. However systems often need to handle identifiers where the system is not known. There is not a 1:1 relationship between type and system, since many different systems have the same type.

                        Control1..1
                        BindingUnless not suitable, these codes SHALL be taken from IdentifierTypeCodes
                        (extensible to http://hl7.org/fhir/ValueSet/identifier-type|5.0.0)

                        A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.

                        TypeCodeableConcept
                        Is Modifierfalse
                        Must Supporttrue
                        Summarytrue
                        Requirements

                        Allows users to make use of identifiers when the identifier system is not known.

                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        176. Medication.identifier:gtin.system
                        Definition

                        Establishes the namespace for the value - that is, an absolute URL that describes a set values that are unique.

                        ShortThe namespace for the identifier value
                        Comments

                        Identifier.system is always case sensitive.

                        Control1..1
                        Typeuri
                        Is Modifierfalse
                        Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                        Must Supporttrue
                        Summarytrue
                        Requirements

                        There are many sets of identifiers. To perform matching of two identifiers, we need to know what set we're dealing with. The system identifies a particular set of unique identifiers.

                        Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-gtin
                        ExampleGeneral: http://www.acme.com/identifiers/patient
                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        178. Medication.identifier:gtin.value
                        Definition

                        The portion of the identifier typically relevant to the user and which is unique within the context of the system.

                        ShortThe value that is unique
                        Comments

                        If the value is a full URI, then the system SHALL be urn:ietf:rfc:3986. The value's primary purpose is computational mapping. As a result, it may be normalized for comparison purposes (e.g. removing non-significant whitespace, dashes, etc.) A value formatted for human display can be conveyed using the http://hl7.org/fhir/StructureDefinition/rendered-value). Identifier.value is to be treated as case sensitive unless knowledge of the Identifier.system allows the processer to be confident that non-case-sensitive processing is safe.

                        Control1..1
                        This element is affected by the following invariants: ident-1
                        Typestring
                        Is Modifierfalse
                        Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                        Must Supporttrue
                        Summarytrue
                        ExampleGeneral: 123456
                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        180. Medication.identifier:gtin.period
                        Definition

                        Time period during which identifier is/was valid for use.

                        ShortTime period when id is/was valid for use
                        Control0..1
                        TypePeriod
                        Is Modifierfalse
                        Summarytrue
                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        182. Medication.identifier:gtin.assigner
                        Definition

                        Organization that issued/manages the identifier.

                        ShortOrganization that issued id (may be just text)
                        Comments

                        The Identifier.assigner may omit the .reference element and only contain a .display element reflecting the name or other textual information about the assigning organization.

                        Control0..1
                        TypeReference(Organization)
                        Is Modifierfalse
                        Summarytrue
                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        184. Medication.code
                        Definition

                        A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.

                        ShortCodes that identify this medication
                        Comments

                        Depending on the context of use, the code that was actually selected by the user (prescriber, dispenser, etc.) will have the coding.userSelected set to true. As described in the coding datatype: "A coding may be marked as a "userSelected" if a user selected the particular coded value in a user interface (e.g. the user selects an item in a pick-list). If a user selected coding exists, it is the preferred choice for performing translations etc. Other codes can only be literal translations to alternative code systems, or codes at a lower level of granularity (e.g. a generic code for a vendor-specific primary one).

                        Control1..1
                        BindingThe codes SHALL be taken from ZAMMSA Medication SKU ValueSet
                        (required to http://hapi.moh.gov.zm/fhir/ValueSet/medication-zammsa-sku)
                        TypeCodeableConcept
                        Is Modifierfalse
                        Must Supporttrue
                        Summarytrue
                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        186. Medication.code.id
                        Definition

                        Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

                        ShortUnique id for inter-element referencing
                        Control0..1
                        This element is affected by the following invariants: ele-1
                        Typeid
                        Is Modifierfalse
                        XML FormatIn the XML format, this property is represented as an attribute.
                        Summaryfalse
                        188. Medication.code.extension
                        Definition

                        May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

                        ShortAdditional content defined by implementations
                        Comments

                        There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

                        Control0..*
                        TypeExtension
                        Is Modifierfalse
                        Summaryfalse
                        Alternate Namesextensions, user content
                        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                        ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
                        SlicingThis element introduces a set of slices on Medication.code.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
                        • value @ url
                        • 190. Medication.code.coding
                          Definition

                          A reference to a code defined by a terminology system.

                          ShortCode defined by a terminology system
                          Comments

                          Codes may be defined very casually in enumerations, or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information. Ordering of codings is undefined and SHALL NOT be used to infer meaning. Generally, at most only one of the coding values will be labeled as UserSelected = true.

                          Control1..1
                          TypeCoding
                          Is Modifierfalse
                          Must Supporttrue
                          Summarytrue
                          Requirements

                          Allows for alternative encodings within a code system, and translations to other code systems.

                          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                          192. Medication.code.coding.id
                          Definition

                          Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

                          ShortUnique id for inter-element referencing
                          Control0..1
                          This element is affected by the following invariants: ele-1
                          Typeid
                          Is Modifierfalse
                          XML FormatIn the XML format, this property is represented as an attribute.
                          Summaryfalse
                          194. Medication.code.coding.extension
                          Definition

                          May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

                          ShortAdditional content defined by implementations
                          Comments

                          There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

                          Control0..*
                          TypeExtension
                          Is Modifierfalse
                          Summaryfalse
                          Alternate Namesextensions, user content
                          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                          ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
                          SlicingThis element introduces a set of slices on Medication.code.coding.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
                          • value @ url
                          • 196. Medication.code.coding.system
                            Definition

                            The identification of the code system that defines the meaning of the symbol in the code.

                            ShortIdentity of the terminology system
                            Comments

                            The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should be an absolute reference to some definition that establishes the system clearly and unambiguously.

                            Control1..1
                            Typeuri
                            Is Modifierfalse
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Must Supporttrue
                            Summarytrue
                            Requirements

                            Need to be unambiguous about the source of the definition of the symbol.

                            Pattern Valuehttp://hapi.moh.gov.zm/fhir/CodeSystem/medication-zammsa-sku
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            198. Medication.code.coding.version
                            Definition

                            The version of the code system which was used when choosing this code. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.

                            ShortVersion of the system - if relevant
                            Comments

                            Where the terminology does not clearly define what string should be used to identify code system versions, the recommendation is to use the date (expressed in FHIR date format) on which that version was officially published as the version date.

                            NoteThis is a business version Id, not a resource version Id (see discussion)
                            Control0..1
                            Typestring
                            Is Modifierfalse
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Summarytrue
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            200. Medication.code.coding.code
                            Definition

                            A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).

                            ShortSymbol in syntax defined by the system
                            Control1..1
                            This element is affected by the following invariants: cod-1
                            Typecode
                            Is Modifierfalse
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Must Supporttrue
                            Summarytrue
                            Requirements

                            Need to refer to a particular code in the system.

                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            202. Medication.code.coding.display
                            Definition

                            A representation of the meaning of the code in the system, following the rules of the system.

                            ShortRepresentation defined by the system
                            Control0..1
                            This element is affected by the following invariants: cod-1
                            Typestring
                            Is Modifierfalse
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Must Supporttrue
                            Summarytrue
                            Requirements

                            Need to be able to carry a human-readable meaning of the code for readers that do not know the system.

                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            204. Medication.code.coding.userSelected
                            Definition

                            Indicates that this coding was chosen by a user directly - e.g. off a pick list of available items (codes or displays).

                            ShortIf this coding was chosen directly by the user
                            Comments

                            Amongst a set of alternatives, a directly chosen code is the most appropriate starting point for new translations. There is some ambiguity about what exactly 'directly chosen' implies, and trading partner agreement may be needed to clarify the use of this element and its consequences more completely.

                            Control0..1
                            Typeboolean
                            Is Modifierfalse
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Summarytrue
                            Requirements

                            This has been identified as a clinical safety criterium - that this exact system/code pair was chosen explicitly, rather than inferred by the system based on some rules or language processing.

                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            206. Medication.code.text
                            Definition

                            A human language representation of the concept as seen/selected/uttered by the user who entered the data and/or which represents the intended meaning of the user.

                            ShortPlain text representation of the concept
                            Comments

                            Very often the text is the same as a displayName of one of the codings.

                            Control1..1
                            Typestring
                            Is Modifierfalse
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Must Supporttrue
                            Summarytrue
                            Requirements

                            The codes from the terminologies do not always capture the correct meaning with all the nuances of the human using them, or sometimes there is no appropriate code at all. In these cases, the text is used to capture the full meaning of the source.

                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            208. Medication.status
                            Definition

                            A code to indicate if the medication is in active use.

                            Shortactive | inactive | entered-in-error
                            Comments

                            This status is intended to identify if the medication in a local system is in active use within a drug database or inventory. For example, a pharmacy system may create a new drug file record for a compounded product "ABC Hospital Special Cream" with an active status. At some point in the future, it may be determined that the drug record was created with an error and the status is changed to "entered in error". This status is not intended to specify if a medication is part of a particular formulary. It is possible that the drug record may be referenced by multiple formularies or catalogues and each of those entries would have a separate status.

                            Control1..1
                            BindingThe codes SHALL be taken from MedicationStatusCodes
                            (required to http://hl7.org/fhir/ValueSet/medication-status|5.0.0)

                            A coded concept defining if the medication is in active use.

                            Typecode
                            Is Modifiertrue because This element changes the interpretation of all descriptive attributes.
                            Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
                            Must Supporttrue
                            Summarytrue
                            Pattern Valueactive
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            210. Medication.marketingAuthorizationHolder
                            Definition

                            The company or other legal entity that has authorization, from the appropriate drug regulatory authority, to market a medicine in one or more jurisdictions. Typically abbreviated MAH.Note: The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).

                            ShortMarketing authorization holder (e.g. ZAMMSA or manufacturer; align with SDP/contract).
                            Control0..1
                            TypeReference(Organization)
                            Is Modifierfalse
                            Must Supporttrue
                            Summarytrue
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            212. Medication.doseForm
                            Definition

                            Describes the form of the item. Powder; tablets; capsule.

                            ShortPharmaceutical dose form (e.g. tablet, syrup, injection)
                            Comments

                            When Medication is referenced from MedicationRequest, this is the ordered form. When Medication is referenced within MedicationDispense, this is the dispensed form. When Medication is referenced within MedicationAdministration, this is administered form.

                            Control1..1
                            BindingFor example codes, see SNOMEDCTFormCodes
                            (example to http://hl7.org/fhir/ValueSet/medication-form-codes|5.0.0)

                            A coded concept defining the form of a medication.

                            TypeCodeableConcept
                            Is Modifierfalse
                            Must Supporttrue
                            Summaryfalse
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            214. Medication.totalVolume
                            Definition

                            When the specified product code does not infer a package size, this is the specific amount of drug in the product. For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).

                            ShortWhen the specified product code does not infer a package size, this is the specific amount of drug in the product
                            Control0..0
                            TypeQuantity
                            Is Modifierfalse
                            Must Supportfalse
                            Summarytrue
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            216. Medication.ingredient
                            Definition

                            Identifies a particular constituent of interest in the product.

                            ShortActive or inactive ingredient
                            Comments

                            The ingredients need not be a complete list. If an ingredient is not specified, this does not indicate whether an ingredient is present or absent. If an ingredient is specified it does not mean that all ingredients are specified. It is possible to specify both inactive and active ingredients.

                            Control0..0
                            TypeBackboneElement
                            Is Modifierfalse
                            Must Supportfalse
                            Summaryfalse
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            224. Medication.batch
                            Definition

                            Information that only applies to packages (not products).

                            ShortDetails about packaged medications
                            Control0..0
                            TypeBackboneElement
                            Is Modifierfalse
                            Must Supportfalse
                            Summaryfalse
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
                            231. Medication.definition
                            Definition

                            A reference to a knowledge resource that provides more information about this medication.

                            ShortKnowledge about this medication
                            Control0..1
                            TypeReference(MedicationKnowledge)
                            Is Modifierfalse
                            Must Supportfalse
                            Summaryfalse
                            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))